package cn.edu.model;

/**
 * @author 文欣雨
 * @version V1.0
 * @Package cn.edu.model
 * @date 2023/2/6 19:24
 */
public class Library {
    private Publication[] publications;
    private int head = 0;

    /**
     * 构造方法
     *
     * @param i 图书馆的容量
     */
    public Library(int i) {
        publications = new Publication[i];
    }

    /**
     * 根据出版物名称查询出版物方法
     *
     * @param name 出版物名称
     * @return 查找到的出版物
     */
    public Publication selectPublication(String name) {
        Publication publication = null;
        if (head == 0) {
            return publication;
        }
        for (int i = 0; i <= head; i++) {
            Publication p = publications[i];
            if (name.equals(p.getName())) {
                publication = p;
                break;
            }
        }
        return publication;
    }

    /**
     * 添加出版物方法
     *
     * @param publication 要添加的出版物
     */
    public void addPublication(Publication publication) {
        if (head < publications.length - 1) {
            if (selectPublication(publication.getName()) == null) {
                publications[head] = publication;
                head++;
            } else {
                System.err.println("添加错误，已经存在同名的出版物");
            }
        } else {
            System.err.println("添加失败，数组已满");
        }
    }

    /**
     * 删除出版物方法
     *
     * @param publicationName 要删除的出版物名称
     */
    public void deletePublication(String publicationName) {
        if (head == 0) {
            System.err.println("该出版物不存在");
        }
        Publication publication = null;
        int i;
        for (i = 0; i <= head; i++) {
            Publication p = publications[i];
            if (publicationName.equals(p.getName())) {
                publication = p;
                break;
            }
        }
        if (publication == null) {
            System.err.println("该出版物不存在");
        } else {
            for (; i < head; i++) {
                publications[i] = publications[i + 1];
            }
            head--;
        }
    }

    /**
     * 显示方法，遍历并显示所有出版物信息
     */
    public void show() {
        for (int i = 0; i < head; i++) {
            publications[i].show();
        }
    }
}
